﻿Ext.define('Costo', {
    extend: 'ABMBase',
    Title: 'Formulario ABM Esquema de Costo',
    Model: 'Model.Costo',
    defaultPropertySort: 'descripcion',
    storeEntidad: CreateForeignStore('storeEntidad', 'Model.Entidad'),
    listeners: {
        Creando: function (rcd) {
            rcd.record.set('id_costo', activeInstance.GetNum('COSTO'));
            rcd.record.set('id_entidad', activeInstance.EjecutarEnServidor('ObtenerEntidadOperador'));
        },
        Actualizando: function (rcd) {
            if ((Ext.isEmpty(rcd.record.get('valor')) || rcd.record.get('valor') == 0) && (Ext.isEmpty(rcd.record.get('porcentaje')) || rcd.record.get('porcentaje') == 0)) {
                ShowError('Al menos debe ingresar un valor o un porcentaje.');
                return false;
            }
            if (rcd.record.get('valor') == 0)
                rcd.record.set('valor', null);
            if (rcd.record.get('porcentaje') == 0)
                rcd.record.set('porcentaje', null);
            return true;
        }
    },
    WindowPanel: [{
        xtype: 'container',
        frame: true,
        layout: 'column',
        items: [{
            xtype: 'fieldset',
            columnWidth: 0.5,
            border: false,
            items: [{
                xtype: 'textfield',
                fieldLabel: 'Identificador',
                name: 'id_costo',
                maxLength: 10,
                isPrimaryKey: true,
                enforceMaxLength: true,
                allowBlank: false
            }, {
                xtype: 'textfield',
                fieldLabel: 'Descripción',
                name: 'descripcion',
                maxLength: 50,
                enforceMaxLength: true,
                allowBlank: false
            }, {
                xtype: 'numberfield',
                id: 'nfValor',
                name: 'valor',
                fieldLabel: 'Valor',
                allowBlank: true,
                value: 0,
                minValue: 0,
                listeners: {
                    change: function (fld, val) {
                        if (val > 0) {
                            Ext.getCmp('nfPorcentaje').setReadOnly(true);
                        } else {
                            Ext.getCmp('nfPorcentaje').setReadOnly(false);
                        }
                    }
                }
            }, {
                xtype: 'numberfield',
                id: 'nfPorcentaje',
                name: 'porcentaje',
                fieldLabel: 'Porcentaje',
                allowBlank: true,
                value: 0,
                maxValue: 100,
                minValue: 0,
                listeners: {
                    change: function (fld, val) {
                        if (val > 0) {
                            Ext.getCmp('nfValor').setReadOnly(true);
                        } else {
                            Ext.getCmp('nfValor').setReadOnly(false);
                        }
                    }
                }
            }, {
                xtype: 'radiofield',
                fieldLabel: 'Descuento',
                allowBlank: true,
                checked: true,
                name: 'signo',
                inputValue: '-'
            }, {
                xtype: 'radiofield',
                fieldLabel: 'Recargo',
                allowBlank: true,
                name: 'signo',
                inputValue: '+'
            }, {
                xtype: 'numberfield',
                name: 'orden_aplica',
                fieldLabel: 'Orden de Aplicación',
                allowBlank: false,
                value: 0,
                maxValue: 100,
                minValue: 0
            }]
        }, {
            xtype: 'fieldset',
            columnWidth: 0.5,
            border: false,
            items: [{
                xtype: 'combobox',
                id: 'cbComercio',
                fieldLabel: 'Comercio',
                queryMode: 'local',
                displayField: 'nombre',
                valueField: 'id_entidad',
                editable: true,
                forceSelection: true,
                store: Ext.StoreMgr.get('storeEntidad'),
                allowBlank: true,
                readOnly: true,
                name: 'id_entidad'
            }]
        }]
    }],
    Columns: [
            { text: 'Identificador', dataIndex: 'id_costo', filter: true },
            { text: 'Descripcion', dataIndex: 'descripcion', filter: true },
            { text: 'Valor', dataIndex: 'valor', filter: true },
            { text: 'Porcentaje', dataIndex: 'porcentaje', filter: true },
            { text: 'Signo', dataIndex: 'signo', filter: true },
            { text: 'Orden de Aplicación', dataIndex: 'orden_aplica', filter: true }
        ]
});
